Population
Population by division (column chart)

Population density by division (chloropleth map)

Population density by district (chloropleth map)

Population density by district (percentage histogram)

Meterology
Temp by division

Temp by district

Annual rainfall, by district

Hydrology
Hydrological map of Bangladesh

Riverine area percentage by district

Monsoon season waterways

Agriculture
Agricultural production by division (chloropleth map)

Agricultural production by district (chloropleth map)

Agricultural production by district (percentage histogram)

Industry
Transportation
Rivers and ports (chloropleth map, zoomed out)

Rivers and ports (chloropleth map, zoomed in)

LS0tCnRpdGxlOiAiRGlzdHJpY3QgU3RhdGlzdGljcyAyMDExIGFuYWx5c2lzIgphdXRob3I6ICJUcmlzdGFuIEtpbmRpZyIKZGF0ZTogIkphbnVhcnkgMTksIDIwMTkiCm91dHB1dDoKICBodG1sX25vdGVib29rOgogICAgdG9jOiB5ZXMKLS0tCgpgYGB7ciBpbmNsdWRlID0gRkFMU0V9CiMgaW1wb3J0IGxpYnJhcmllcwpsaWJyYXJ5KGdncmVwZWwpCmxpYnJhcnkoa2FibGVFeHRyYSkKbGlicmFyeShwdXJycikKbGlicmFyeShzZikKbGlicmFyeSh0aWR5dmVyc2UpCgojIGxvYWQgQ1NWIGRhdGEKZHJlZGdpbmdfcGxhbl9kZiA8LSByZWFkX2NzdigiLi9kYXRhL2NzdnMvZHJlZGdpbmdfcGxhbi5jc3YiKQpkaXN0cmljdF9zdGF0aXN0aWNzX2RmIDwtIHJlYWRfY3N2KCIuL2RhdGEvY3N2cy9kaXN0cmljdF9zdGF0aXN0aWNzLmNzdiIpCgojIGxvYWQgc2hhcGVmaWxlIGRhdGEKYmdkX25hdGlvbl9zZiA8LSBzdF9yZWFkKCIuL2RhdGEvc2hhcGVmaWxlcy9iZ2RfbmF0aW9uL2JnZF9uYXRpb24uc2hwIikKYmdkX2RpdmlzaW9uc19zZiA8LSBzdF9yZWFkKCIuL2RhdGEvc2hhcGVmaWxlcy9iZ2RfZGl2aXNpb25zL2JnZF9kaXZpc2lvbnMuc2hwIikKYmdkX2Rpc3RyaWN0c19zZiA8LSBzdF9yZWFkKCIuL2RhdGEvc2hhcGVmaWxlcy9iZ2RfZGlzdHJpY3RzL2JnZF9kaXN0cmljdHMuc2hwIikKYmdkX2h5ZHJvbG9neV9zZiA8LSBzdF9yZWFkKCIuL2RhdGEvc2hhcGVmaWxlcy9iZ2RfaHlkcm9sb2d5L2JnZF9oeWRyb2xvZ3kuc2hwIikKYmdkX2l3dF9yb3V0ZXNfc2YgPC0gc3RfcmVhZCgiLi9kYXRhL3NoYXBlZmlsZXMvYmdkX2l3dF9yb3V0ZXMvYmdkX2l3dF9yb3V0ZXMuc2hwIikKYmdkX3BvcnRzX3NmIDwtIHN0X3JlYWQoIi4vZGF0YS9zaGFwZWZpbGVzL2JnZF9wb3J0cy9iZ2RfcG9ydHMuc2hwIikKCiMgYWRkIHBvcHVsYXRpb24gZGVuc2l0eSwgbWlkcG9pbnQgdGVtcGVyYXR1cmUsIHJpdmVyaW5lIGFyZWEgcGVyY2VudGFnZSwgYWdyaWN1bHR1cmFsIG91dHB1dCwgYW5kIHdhdGVyd2F5cy9zcV9rbSB0byBkaXN0cmljdF9zdGF0aXN0aWNzX2RmCmRpc3RyaWN0X3N0YXRpc3RpY3NfZGYgPC0gZGlzdHJpY3Rfc3RhdGlzdGljc19kZiAlPiUKICBtdXRhdGUoCiAgICBkZW5zaXR5X3BvcF9wZXJfc3Ffa20gPSByb3VuZChwb3B1bGF0aW9uIC8gdG90YWxfYXJlYV9zcV9rbSksCiAgICBtaWRwb2ludF90ZW1wZXJhdHVyZSA9IHJvdW5kKAogICAgICAobWF4X3RlbXBfYyArIG1pbl90ZW1wX2MpIC8gMiwKICAgICAgMQogICAgKSwKICAgIHJpdmVyaW5lX2FyZWFfcGVyY2VudGFnZSA9IHJvdW5kKHJpdmVyaW5lX2FyZWFfc3Ffa20gLyB0b3RhbF9hcmVhX3NxX2ttICogMTAwKSwKICAgIGFncmljdWx0dXJhbF9wcm9kdWN0X21ldHJpY190b24gPSAocmljZV9tZXRyaWNfdG9uICsgd2hlYXRfbWV0cmljX3RvbiArIHN1Z2FyY2FuZV9tZXRyaWNfdG9uICsgcG90YXRvX21ldHJpY190b24pLAogICAgbW9uc29vbl93YXRlcndheV9rbV9wZXJfc3Ffa20gPSByb3VuZCh3YXRlcndheV9tb25zb29uX3NlYXNvbl9rbSAvIHRvdGFsX2FyZWFfc3Ffa20pCiAgKSAlPiUKICBhcnJhbmdlKGRpc3RyaWN0KQoKIyByZW1vdmUgdW5uZWNlc3NhcnkgYXR0cmlidXRlcyBmcm9tIGJnZF9kaXN0cmljdHNfc2YKdW5kZXNpcmVkX2NvbHVtbnMgPC0gYygiQURNMl9QQ09ERSIsICJBRE0yX1JFRiIsICJBRE0yQUxUMUVOIiwgIkFETTJBTFQyRU4iLCAiQURNMV9FTiIsICJBRE0xX1BDT0RFIiwgIkFETTBfRU4iLCAiQURNMF9QQ09ERSIsICJkYXRlIiwgInZhbGlkT24iLCAiVmFsaWRUbyIpCmJnZF9kaXN0cmljdHNfc2YgPC0gYmdkX2Rpc3RyaWN0c19zZiAlPiUKICBtb2RpZnlfYXQodW5kZXNpcmVkX2NvbHVtbnMsIH5OVUxMKQoKIyBjb252ZXJ0IGZhY3RvciBhdHRyaWJ1dGVzIHRvIGNoYXJhY3RlciBhdHRyaWJ1dGVzCmJnZF9kaXZpc2lvbnNfc2YkQURNMV9FTiA8LSBhcy5jaGFyYWN0ZXIoYmdkX2RpdmlzaW9uc19zZiRBRE0xX0VOKQpiZ2RfZGlzdHJpY3RzX3NmJEFETTJfRU4gPC0gYXMuY2hhcmFjdGVyKGJnZF9kaXN0cmljdHNfc2YkQURNMl9FTikKYmdkX3BvcnRzX3NmJFJpdmVyX1BvcnQgPC0gYXMuY2hhcmFjdGVyKGJnZF9wb3J0c19zZiRSaXZlcl9Qb3J0KQoKIyBjcmVhdGUgZGl2aXNpb25fc3RhdGlzdGljc19kZgpkaXZfc3RhdHNfcGFydF8xIDwtIGRpc3RyaWN0X3N0YXRpc3RpY3NfZGYgJT4lCiAgZ3JvdXBfYnkoZGl2aXNpb24pICU+JQogIHN1bW1hcml6ZV9hdCgKICAgIGMoInRvdGFsX2FyZWFfc3Ffa20iLCAicml2ZXJpbmVfYXJlYV9zcV9rbSIsICJwb3B1bGF0aW9uIiwgInJhaW5mYWxsX21ldGVycyIsICJyaWNlX21ldHJpY190b24iLCAid2hlYXRfbWV0cmljX3RvbiIsICJzdWdhcmNhbmVfbWV0cmljX3RvbiIsICJwb3RhdG9fbWV0cmljX3RvbiIsICJyb2FkX2ttIiwgInJhaWx3YXlfa20iLCAid2F0ZXJ3YXlfbW9uc29vbl9zZWFzb25fa20iLCAid2F0ZXJ3YXlfeWVhcl9yb3VuZF9rbSIsICJyYWlsd2F5X3N0YXRpb24iLCAic3RlYW1lcl9zdGF0aW9uIiwgImJ1c19zdGF0aW9uIiksCiAgICBzdW0sCiAgICBuYS5ybSA9IFRSVUUKICApCmRpdl9zdGF0c19wYXJ0XzIgPC0gZGlzdHJpY3Rfc3RhdGlzdGljc19kZiAlPiUKICBncm91cF9ieShkaXZpc2lvbikgJT4lCiAgc3VtbWFyaXplX2F0KAogICAgYygibWF4X3RlbXBfYyIsICJtaW5fdGVtcF9jIiwgIm1pZHBvaW50X3RlbXBlcmF0dXJlIiksCiAgICBtZWRpYW4sCiAgICBuYS5ybSA9IFRSVUUKICApCmRpdmlzaW9uX3N0YXRpc3RpY3NfZGYgPC0gbGVmdF9qb2luKGRpdl9zdGF0c19wYXJ0XzEsIGRpdl9zdGF0c19wYXJ0XzIsIGJ5ID0gImRpdmlzaW9uIikKCiMgYWRkIHBvcHVsYXRpb24gZGVuc2l0eSwgbWlkcG9pbnQgdGVtcGVyYXR1cmUsIHJpdmVyaW5lIGFyZWEgcGVyY2VudGFnZSwgdG90YWwgYWdyaWN1bHR1cmFsIG91dHB1dCwgYW5kIHdhdGVyd2F5cy9zcV9rbSB0byBkaXZpc2lvbl9zdGF0aXN0aWNzX2RmCmRpdmlzaW9uX3N0YXRpc3RpY3NfZGYgPC0gZGl2aXNpb25fc3RhdGlzdGljc19kZiAlPiUKICBtdXRhdGUoCiAgICBkZW5zaXR5X3BvcF9wZXJfc3Ffa20gPSByb3VuZChwb3B1bGF0aW9uIC8gdG90YWxfYXJlYV9zcV9rbSksCiAgICByaXZlcmluZV9hcmVhX3BlcmNlbnRhZ2UgPSByb3VuZChyaXZlcmluZV9hcmVhX3NxX2ttIC8gdG90YWxfYXJlYV9zcV9rbSAqIDEwMCksCiAgICBhZ3JpY3VsdHVyYWxfcHJvZHVjdF9tZXRyaWNfdG9uID0gKHJpY2VfbWV0cmljX3RvbiArIHdoZWF0X21ldHJpY190b24gKyBzdWdhcmNhbmVfbWV0cmljX3RvbiArIHBvdGF0b19tZXRyaWNfdG9uKSwKICAgIG1vbnNvb25fd2F0ZXJ3YXlfa21fcGVyX3NxX2ttID0gcm91bmQod2F0ZXJ3YXlfbW9uc29vbl9zZWFzb25fa20gLyB0b3RhbF9hcmVhX3NxX2ttLCAxKQogICkgJT4lCiAgYXJyYW5nZShkaXZpc2lvbikKCiMgam9pbiBkZiB0byBzZgpiZ2RfZGl2aXNpb25zX3NmIDwtIGxlZnRfam9pbihiZ2RfZGl2aXNpb25zX3NmLCBkaXZpc2lvbl9zdGF0aXN0aWNzX2RmLCBieT1jKCJBRE0xX0VOIiA9ICJkaXZpc2lvbiIpKQpiZ2RfZGlzdHJpY3RzX3NmIDwtIGxlZnRfam9pbihiZ2RfZGlzdHJpY3RzX3NmLCBkaXN0cmljdF9zdGF0aXN0aWNzX2RmLCBieT1jKCJBRE0yX0VOIiA9ICJkaXN0cmljdCIpKQoKIyByZW5hbWUgUGFuZ2FvbiBQb3J0IHRvIFBhbmdhb24KYmdkX3BvcnRzX3NmIDwtIGJnZF9wb3J0c19zZiAlPiUgCiAgICBtdXRhdGUoUml2ZXJfUG9ydCA9IHJlcGxhY2UoUml2ZXJfUG9ydCwgUml2ZXJfUG9ydCA9PSAiUGFuZ2FvbiBQb3J0IiwgIlBhbmdhb24iKSkKYGBgCgoKCiMjIFBvcHVsYXRpb24KCiMjIyBQb3B1bGF0aW9uIGJ5IGRpdmlzaW9uIChjb2x1bW4gY2hhcnQpCmBgYHtyIGVjaG8gPSBGQUxTRX0KZ2dwbG90KGRpdmlzaW9uX3N0YXRpc3RpY3NfZGYpICsKICBnZW9tX2NvbCgKICAgIGFlcygKICAgICAgcmVvcmRlcihkaXZpc2lvbiwgcG9wdWxhdGlvbiksCiAgICAgIHBvcHVsYXRpb24vMTAwMDAwMAogICAgKSwKICAgIGZpbGwgPSAicmVkIgogICkgKwogIGdlb21fdGV4dCgKICAgIGFlcygKICAgICAgeCA9IGRpdmlzaW9uLCAKICAgICAgeSA9IHBvcHVsYXRpb24vMTAwMDAwMCArIDEsCiAgICAgIGxhYmVsID0gcm91bmQocG9wdWxhdGlvbi8xMDAwMDAwLCAxKQogICAgKQogICkgKwogIGxhYnMoCiAgICB4ID0gIkRpdmlzaW9uIiwKICAgIHkgPSAiUG9wdWxhdGlvbiAobWlsKSIKICApCmBgYAoKIyMjIFBvcHVsYXRpb24gZGVuc2l0eSBieSBkaXZpc2lvbiAoY2hsb3JvcGxldGggbWFwKQpgYGB7ciBlY2hvID0gRkFMU0V9CmdncGxvdChiZ2RfZGl2aXNpb25zX3NmKSArCiAgZ2VvbV9zZigKICAgIGFlcyhmaWxsID0gZGVuc2l0eV9wb3BfcGVyX3NxX2ttKQogICkgKwogIHNjYWxlX2ZpbGxfZ3JhZGllbnQobG93ID0gIndoaXRlIiwgaGlnaCA9ICJyZWQiKSArCiAgbGFicygKICAgIGZpbGwgPSAiUG9wdWxhdGlvbiBkZW5zaXR5IiwKICAgIHggPSAiTG9uZ2l0dWRlIiwKICAgIHkgPSAiTGF0aXR1ZGUiCiAgKQpgYGAKCgojIyMgUG9wdWxhdGlvbiBkZW5zaXR5IGJ5IGRpc3RyaWN0IChjaGxvcm9wbGV0aCBtYXApCmBgYHtyIGVjaG8gPSBGQUxTRX0KYmdkX2Rpc3RyaWN0c19zZl9taW51c19uYXJheWFuZ2FuaiA8LSBiZ2RfZGlzdHJpY3RzX3NmICU+JQogIGZpbHRlcigKICAgIGRlbnNpdHlfcG9wX3Blcl9zcV9rbSA8IDQwMDAKICApCgpnZ3Bsb3QoYmdkX2Rpc3RyaWN0c19zZl9taW51c19uYXJheWFuZ2FuaikgKwogIGdlb21fc2YoCiAgICBhZXMoZmlsbCA9IGRlbnNpdHlfcG9wX3Blcl9zcV9rbSkKICApICsKICBzY2FsZV9maWxsX2dyYWRpZW50KGxvdyA9ICJ3aGl0ZSIsIGhpZ2ggPSAicmVkIikgKwogIGxhYnMoCiAgICB4ID0gIkxvbmdpdHVkZSIsCiAgICB5ID0gIkxhdGl0dWRlIiwKICAgIGZpbGwgPSAiUG9wdWxhdGlvbiBkZW5zaXR5IiwKICAgIHN1YnRpdGxlID0gIk5hcmF5YW5nYW5qICg0MzAwKSByZW1vdmVkIgogICkKYGBgCgojIyMgUG9wdWxhdGlvbiBkZW5zaXR5IGJ5IGRpc3RyaWN0IChwZXJjZW50YWdlIGhpc3RvZ3JhbSkKYGBge3IgZWNobyA9IEZBTFNFfQpnZ3Bsb3QoZGlzdHJpY3Rfc3RhdGlzdGljc19kZiwgYWVzKHggPSBwb3B1bGF0aW9uL3RvdGFsX2FyZWFfc3Ffa20pKSArICAKICBnZW9tX2hpc3RvZ3JhbSgKICAgIGFlcygKICAgICAgeSA9ICguLmNvdW50Li4pL3N1bSguLmNvdW50Li4pCiAgICApLAogICAgYnJlYWtzID0gc2VxKDAsIDIwMDAsIDIwMCksCiAgICBmaWxsID0gInJlZCIKICApICsKICBzY2FsZV95X2NvbnRpbnVvdXMobGFiZWxzID0gc2NhbGVzOjpwZXJjZW50KSArCiAgc2NhbGVfeF9jb250aW51b3VzKGJyZWFrcyA9IHNlcSgwLCAyMDAwLCAyMDApKSArCiAgbGFicygKICAgIHN1YnRpdGxlID0gIm4gPSA2MzsgMSBvdXRsaWVyIChOYXJheWFuZ2FuaiwgNDMwMCkgcmVtb3ZlZCIsCiAgICB4ID0gIlBvcHVsYXRpb24gZGVuc2l0eSIsCiAgICB5ID0gIlBlcmNlbnRhZ2UiCiAgKQpgYGAKCgoKIyMgTWV0ZXJvbG9neQoKIyMjIFRlbXAgYnkgZGl2aXNpb24KYGBge3IgZWNobyA9IEZBTFNFfQpnZ3Bsb3QoYmdkX2RpdmlzaW9uc19zZikgKwogIGdlb21fc2YoCiAgICBhZXMoZmlsbCA9IG1pZHBvaW50X3RlbXBlcmF0dXJlKQogICkgKwogIHNjYWxlX2ZpbGxfZ3JhZGllbnQyKAogICAgbG93ID0gImJsdWUiLAogICAgbWlkID0gIndoaXRlIiwKICAgIGhpZ2ggPSAicmVkIiwKICAgIG1pZHBvaW50ID0gbWVkaWFuKGRpdmlzaW9uX3N0YXRpc3RpY3NfZGYkbWlkcG9pbnRfdGVtcGVyYXR1cmUpCiAgKSArCiAgbGFicygKICAgIGZpbGwgPSAiVGVtcGVyYXR1cmUiLAogICAgeCA9ICJMb25naXR1ZGUiLAogICAgeSA9ICJMYXRpdHVkZSIKICApCmBgYAoKIyMjIFRlbXAgYnkgZGlzdHJpY3QKYGBge3IgZWNobyA9IEZBTFNFfQpnZ3Bsb3QoYmdkX2Rpc3RyaWN0c19zZikgKwogIGdlb21fc2YoCiAgICBhZXMoZmlsbCA9IG1pZHBvaW50X3RlbXBlcmF0dXJlKQogICkgKwogIHNjYWxlX2ZpbGxfZ3JhZGllbnQyKAogICAgbG93ID0gImJsdWUiLAogICAgbWlkID0gIndoaXRlIiwKICAgIGhpZ2ggPSAicmVkIiwKICAgIG1pZHBvaW50ID0gbWVkaWFuKGRpc3RyaWN0X3N0YXRpc3RpY3NfZGYkbWlkcG9pbnRfdGVtcGVyYXR1cmUpCiAgKSArCiAgbGFicygKICAgIGZpbGwgPSAiVGVtcGVyYXR1cmUiLAogICAgeCA9ICJMb25naXR1ZGUiLAogICAgeSA9ICJMYXRpdHVkZSIKICApCmBgYAoKIyMjIEFubnVhbCByYWluZmFsbCwgYnkgZGlzdHJpY3QKYGBge3IgZWNobyA9IEZBTFNFfQpnZ3Bsb3QoYmdkX2Rpc3RyaWN0c19zZikgKwogIGdlb21fc2YoCiAgICBhZXMoZmlsbCA9IHJhaW5mYWxsX21ldGVycyAvIHRvdGFsX2FyZWFfc3Ffa20pCiAgKSArCiAgc2NhbGVfZmlsbF9ncmFkaWVudChsb3cgPSAid2hpdGUiLCBoaWdoID0gImJsdWUiKSArCiAgbGFicygKICAgIHggPSAiTG9uZ2l0dWRlIiwKICAgIHkgPSAiTGF0aXR1ZGUiLAogICAgZmlsbCA9IGV4cHJlc3Npb24oCiAgICAgIHBhc3RlKAogICAgICAgICJBbm51YWwgcmFpbmZhbGwgKCIsCiAgICAgICAgZnJhYygKICAgICAgICAgICJtIiwKICAgICAgICAgIHBhc3RlKCJrbSJeIjIiKQogICAgICAgICksCiAgICAgICAgIikiCiAgICAgICkKICAgICkKICApCmBgYAoKCgojIyBIeWRyb2xvZ3kKCiMjIyBIeWRyb2xvZ2ljYWwgbWFwIG9mIEJhbmdsYWRlc2gKYGBge3IgZWNobyA9IEZBTFNFLCByZXN1bHRzID0gImhpZGUiLCBmaWcua2VlcCA9ICJhbGwifQpnZ3Bsb3QoKSArCmdlb21fc2YoCiAgZGF0YSA9IGJnZF9uYXRpb25fc2YsCiAgY29sb3IgPSAibGlnaHQgZ3JlZW4iLAogIGZpbGwgPSAibGlnaHQgZ3JlZW4iCikgKwpnZW9tX3NmKAogIGRhdGEgPSBiZ2RfaHlkcm9sb2d5X3NmLAogIGNvbG9yID0gImRhcmsgYmx1ZSIsCiAgZmlsbCA9ICJsaWdodCBibHVlIgopICsKbGFicygKICB4ID0gIkxvbmdpdHVkZSIsCiAgeSA9ICJMYXRpdHVkZSIKKQpgYGAKCiMjIyBSaXZlcmluZSBhcmVhIHBlcmNlbnRhZ2UgYnkgZGlzdHJpY3QKYGBge3IgZWNobyA9IEZBTFNFfQpnZ3Bsb3QoYmdkX2Rpc3RyaWN0c19zZikgKwogIGdlb21fc2YoCiAgICBhZXMoZmlsbCA9IHJpdmVyaW5lX2FyZWFfcGVyY2VudGFnZSkKICApICsKICBzY2FsZV9maWxsX2dyYWRpZW50KGxvdyA9ICJ3aGl0ZSIsIGhpZ2ggPSAiYmx1ZSIpICsKICBsYWJzKAogICAgeCA9ICJMb25naXR1ZGUiLAogICAgeSA9ICJMYXRpdHVkZSIsCiAgICBmaWxsID0gIlJpdmVyaW5lIGFyZWEgKHBlcmNlbnRhZ2UpIgogICkKYGBgCgojIyMgTW9uc29vbiBzZWFzb24gd2F0ZXJ3YXlzCmBgYHtyIGVjaG8gPSBGQUxTRX0KZ2dwbG90KGJnZF9kaXN0cmljdHNfc2YpICsKICBnZW9tX3NmKAogICAgYWVzKGZpbGwgPSAod2F0ZXJ3YXlfbW9uc29vbl9zZWFzb25fa20vdG90YWxfYXJlYV9zcV9rbSkpCiAgKSArCiAgc2NhbGVfZmlsbF9ncmFkaWVudChsb3cgPSAid2hpdGUiLCBoaWdoID0gImJsdWUiKSArCiAgbGFicygKICAgIHggPSAiTG9uZ2l0dWRlIiwKICAgIHkgPSAiTGF0aXR1ZGUiLAogICAgZmlsbCA9IGV4cHJlc3Npb24oCiAgICAgIHBhc3RlKAogICAgICAgICJNb25zb29uIHNlYXNvbiB3YXRlcndheSBsZW5ndGggKCIsCiAgICAgICAgZnJhYygKICAgICAgICAgICJrbSIsCiAgICAgICAgICBwYXN0ZSgia20iXiIyIikKICAgICAgICApLAogICAgICAgICIpIgogICAgICApCiAgICApCiAgKQpgYGAKCgoKIyMgQWdyaWN1bHR1cmUKCiMjIyBBZ3JpY3VsdHVyYWwgcHJvZHVjdGlvbiBieSBkaXZpc2lvbiAoY2hsb3JvcGxldGggbWFwKQpgYGB7ciBlY2hvID0gRkFMU0V9CmdncGxvdChiZ2RfZGl2aXNpb25zX3NmKSArCiAgZ2VvbV9zZigKICAgIGFlcyhmaWxsID0gYWdyaWN1bHR1cmFsX3Byb2R1Y3RfbWV0cmljX3Rvbi90b3RhbF9hcmVhX3NxX2ttKQogICkgKwogIHNjYWxlX2ZpbGxfZ3JhZGllbnQobG93ID0gIndoaXRlIiwgaGlnaCA9ICJncmVlbiIpICsKICBsYWJzKAogICAgeCA9ICJMb25naXR1ZGUiLAogICAgeSA9ICJMYXRpdHVkZSIsCiAgICBmaWxsID0gZXhwcmVzc2lvbigKICAgICAgcGFzdGUoCiAgICAgICAgIkFncmljdWx0dXJhbCBwcm9kdWN0aW9uICgiLAogICAgICAgIGZyYWMoCiAgICAgICAgICAibWV0cmljIHRvbnMiLAogICAgICAgICAgcGFzdGUoImttIl4iMiIpCiAgICAgICAgKSwKICAgICAgICAiKSIKICAgICAgKQogICAgKQogICkKYGBgCgojIyMgQWdyaWN1bHR1cmFsIHByb2R1Y3Rpb24gYnkgZGlzdHJpY3QgKGNobG9yb3BsZXRoIG1hcCkKYGBge3IgZWNobyA9IEZBTFNFfQpnZ3Bsb3QoYmdkX2Rpc3RyaWN0c19zZikgKwogIGdlb21fc2YoCiAgICBhZXMoZmlsbCA9IGFncmljdWx0dXJhbF9wcm9kdWN0X21ldHJpY190b24vdG90YWxfYXJlYV9zcV9rbSkKICApICsKICBzY2FsZV9maWxsX2dyYWRpZW50KGxvdyA9ICJ3aGl0ZSIsIGhpZ2ggPSAiZ3JlZW4iKSArCiAgbGFicygKICAgIHggPSAiTG9uZ2l0dWRlIiwKICAgIHkgPSAiTGF0aXR1ZGUiLAogICAgZmlsbCA9IGV4cHJlc3Npb24oCiAgICAgIHBhc3RlKAogICAgICAgICJBZ3JpY3VsdHVyYWwgcHJvZHVjdGlvbiAoIiwKICAgICAgICBmcmFjKAogICAgICAgICAgIm1ldHJpYyB0b25zIiwKICAgICAgICAgIHBhc3RlKCJrbSJeIjIiKQogICAgICAgICksCiAgICAgICAgIikiCiAgICAgICkKICAgICkKICApCmBgYAoKIyMjIEFncmljdWx0dXJhbCBwcm9kdWN0aW9uIGJ5IGRpc3RyaWN0IChwZXJjZW50YWdlIGhpc3RvZ3JhbSkKYGBge3IgZWNobyA9IEZBTFNFfQpnZ3Bsb3QoZGlzdHJpY3Rfc3RhdGlzdGljc19kZiwgYWVzKHggPSBhZ3JpY3VsdHVyYWxfcHJvZHVjdF9tZXRyaWNfdG9uL3RvdGFsX2FyZWFfc3Ffa20pKSArICAKICBnZW9tX2hpc3RvZ3JhbSgKICAgIGFlcygKICAgICAgeSA9ICguLmNvdW50Li4pL3N1bSguLmNvdW50Li4pCiAgICApLAogICAgYnJlYWtzID0gc2VxKDAsIDE3NTAsIDE3NSksCiAgICBmaWxsID0gImdyZWVuIiwKICAgIG5hLnJtID0gVFJVRQogICkgKwogIHNjYWxlX3lfY29udGludW91cyhsYWJlbHMgPSBzY2FsZXM6OnBlcmNlbnQpICsKICBzY2FsZV94X2NvbnRpbnVvdXMoYnJlYWtzID0gc2VxKDAsIDE3NTAsIDE3NSkpICsKICBsYWJzKAogICAgeCA9ICJBZ3IgcHJvZHVjdCBtdCAvIHNxX2ttIiwKICAgIHkgPSAiUGVyY2VudGFnZSIKICApCmBgYAoKCgojIyBJbmR1c3RyeQoKCgojIyBUcmFuc3BvcnRhdGlvbgoKIyMjIFJpdmVycyBhbmQgcG9ydHMgKGNobG9yb3BsZXRoIG1hcCwgem9vbWVkIG91dCkKYGBge3IgZWNobyA9IEZBTFNFLCByZXN1bHRzID0gImhpZGUiLCBmaWcua2VlcCA9ICJhbGwifQpnZ3Bsb3QoKSArCmdlb21fc2YoCiAgZGF0YSA9IGJnZF9uYXRpb25fc2YsCiAgY29sb3IgPSAibGlnaHQgZ3JlZW4iLAogIGZpbGwgPSAibGlnaHQgZ3JlZW4iCikgKwpnZW9tX3NmKAogIGRhdGEgPSBiZ2RfaXd0X3JvdXRlc19zZiwKICBjb2xvciA9ICJibHVlIiwKKSArCmdlb21fc2YoCiAgZGF0YSA9IGJnZF9wb3J0c19zZiwKICBjb2xvciA9ICJyZWQiLAogIHNpemUgPSAwLjcKKSArCmxhYnMoCiAgeCA9ICJMb25naXR1ZGUiLAogIHkgPSAiTGF0aXR1ZGUiCikKYGBgCgojIyMgUml2ZXJzIGFuZCBwb3J0cyAoY2hsb3JvcGxldGggbWFwLCB6b29tZWQgaW4pCmBgYHtyIGVjaG8gPSBGQUxTRSwgcmVzdWx0cyA9ICJoaWRlIiwgZmlnLmtlZXAgPSAiYWxsIn0KZ2dwbG90KCkgKwpnZW9tX3NmKAogIGRhdGEgPSBiZ2RfbmF0aW9uX3NmLAogIGNvbG9yID0gImxpZ2h0IGdyZWVuIiwKICBmaWxsID0gImxpZ2h0IGdyZWVuIgopICsKZ2VvbV9zZigKICBkYXRhID0gYmdkX2l3dF9yb3V0ZXNfc2YsCiAgY29sb3IgPSAiYmx1ZSIsCikgKwpnZW9tX3NmKAogIGRhdGEgPSBiZ2RfcG9ydHNfc2YsCiAgY29sb3IgPSAicmVkIiwKICBzaXplID0gMS41CikgKwpnZW9tX3RleHRfcmVwZWwoCiAgZGF0YSA9IGJnZF9wb3J0c19zZiwKICBhZXMoCiAgICB4ID0gYmdkX3BvcnRzX3NmJExvbmdpdHVkZSwKICAgIHkgPSBiZ2RfcG9ydHNfc2YkTGF0aXR1ZGUsCiAgICBsYWJlbCA9IGJnZF9wb3J0c19zZiRSaXZlcl9Qb3J0LAogICAgZ2VvbWV0cnkgPSBnZW9tZXRyeQogICksCiAgc3RhdCA9ICJzZl9jb29yZGluYXRlcyIsCiAgbWluLnNlZ21lbnQubGVuZ3RoID0gMAopICsKbGFicygKICB4ID0gIkxvbmdpdHVkZSIsCiAgeSA9ICJMYXRpdHVkZSIKKSArCmNvb3JkX3NmKAogIHhsaW0gPSBjKDg5LCA5MiksCiAgeWxpbSA9IGMoMjEuNSwgMjQuMjUpCikKYGBg